home *** CD-ROM | disk | FTP | other *** search
- { Profiler-Testversion zu B:\DEMOS.PAS\KOMPOSER.PAS }
-
- CONST ___ = 80;
- ___2 =4;
- VAR __ : INTEGER ;
- VAR _ : ARRAY [1..___] OF REAL ;
- VAR _2 : ARRAY [1..___2] OF REAL ;
- VAR _h : STRING;
- VAR _f : TEXT;
- { 7. Bundeswettbewerb Informatik 1988/1989 }
- { 1. Runde,Aufgabe 1 ; Autor M.Berger }
- { Hinweise am Ende des Files beachten ! }
- CONST MAX_LAENGE_MOTIV=20;
- MAX_ANZAHL_TOENE=10;
- MAX_ANZAHL_SCHRITTE=20;
- TYPE ABBILDUNGSREGEL_DEF=RECORD
- ALT:CHAR;
- NEU:CHAR;
- END;
- WANDLUNGS_ART=(THEMA,VARIATION);
- VAR SATZFORM:ARRAY[1..MAX_ANZAHL_SCHRITTE]OF
- WANDLUNGS_ART;
- ANZAHL_SCHRITTE:INTEGER;
- ABBILDUNGSREGEL:ARRAY[1..MAX_ANZAHL_TOENE]
- OF ABBILDUNGSREGEL_DEF;
- ANZAHL_TOENE:INTEGER;
- MOTIV:ARRAY[1..MAX_LAENGE_MOTIV]OF
- CHAR;
- MOTIVLAENGE:INTEGER;
- PRESTOFAKTOR:REAL;
- ANZAHL_SAETZE:INTEGER;
- TONDAUER:REAL;
- I:INTEGER;
- PROCEDURE EINGABE;
- VAR I:INTEGER;
- X:CHAR;
- BEGIN _[25] := _[25] + 1 ; _2[1] := _2[1] + 1 ;
- CLRSCR ; WRITELN('Computer-Composition (bwINF 7 [88/89];Aufgabe 1)') ;
- WRITELN ; WRITELN ;
- ANZAHL_TOENE:=0; _[6]:=_[6]+1;
- IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; ;
- REPEAT _[31] := _[31] + 1 ;
- ANZAHL_TOENE:=ANZAHL_TOENE+1; _[6]:=_[6]+1;
- IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; ;
- WRITE(' Bitte Ton angeben : ') ;
- READ(KBD,ABBILDUNGSREGEL[ANZAHL_TOENE].ALT); _[6]:=_[6]+1;
- IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; _[5]:=_[5]+1; ;
- WRITE(ABBILDUNGSREGEL[ANZAHL_TOENE].ALT); _[6]:=_[6]+1;
- IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; _[5]:=_[5]+1; ;
- IF ABBILDUNGSREGEL[ANZAHL_TOENE].ALT<>' ' THEN BEGIN _[32] := _[32] + 1 ;
- WRITE(' ; Wird abgebildet auf : ') ;
- READ(KBD,ABBILDUNGSREGEL[ANZAHL_TOENE].NEU); _[6]:=_[6]+1;
- IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; _[5]:=_[5]+1; ;
- WRITE(ABBILDUNGSREGEL[ANZAHL_TOENE].NEU); _[6]:=_[6]+1;
- IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; _[5]:=_[5]+1; ;
- END ;
- WRITELN; _[6]:=_[6]+1; IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; _[5]:=_[5]+1; ;
- UNTIL(ANZAHL_TOENE=MAX_ANZAHL_TOENE)OR
- (ABBILDUNGSREGEL[ANZAHL_TOENE].ALT=' '); _[5]:=_[5]+1; _[6]:=_[6]+1;
- IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; ;
- ANZAHL_TOENE:=ANZAHL_TOENE-1; _[6]:=_[6]+1;
- IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; ;
- WRITELN ;
- MOTIVLAENGE:=0; _[10]:=_[10]+1;
- IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE;
- IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; ;
- REPEAT _[33] := _[33] + 1 ;
- MOTIVLAENGE:=MOTIVLAENGE+1; _[10]:=_[10]+1;
- IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE;
- IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; ;
- WRITE(' Bitte Ton des Themas angeben : ') ;
- READ(KBD,MOTIV[MOTIVLAENGE]); _[10]:=_[10]+1;
- IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE;
- IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; _[9]:=_[9]+1; ; WRITELN(
- MOTIV[MOTIVLAENGE]); _[10]:=_[10]+1;
- IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE;
- IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; _[9]:=_[9]+1; ;
- UNTIL(MOTIV[MOTIVLAENGE]=' ')OR(MOTIVLAENGE>MAX_LAENGE_MOTIV);
- _[10]:=_[10]+1; IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE;
- IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; _[9]:=_[9]+1; ;
- MOTIVLAENGE:=MOTIVLAENGE-1; _[10]:=_[10]+1;
- IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE;
- IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; ;
- WRITELN ;
- ANZAHL_SCHRITTE:=0; _[2]:=_[2]+1;
- IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE;
- IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE; ;
- REPEAT _[34] := _[34] + 1 ;
- ANZAHL_SCHRITTE:=ANZAHL_SCHRITTE+1; _[2]:=_[2]+1;
- IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE;
- IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE; ;
- WRITE(' Soll Thema (u)nverändert bleiben oder (v)ariiert werden ') ;
- READ(KBD,X); _[30]:=_[30]+1; ;
- WRITELN(X); _[30]:=_[30]+1; ;
- IF UPCASE(X)='V' THEN BEGIN _[35] := _[35] + 1 ;
- SATZFORM[ANZAHL_SCHRITTE]:=VARIATION; _[2]:=_[2]+1;
- IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE;
- IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE; _[1]:=_[1]+1; END ;
- IF UPCASE(X)='U' THEN BEGIN _[36] := _[36] + 1 ;
- SATZFORM[ANZAHL_SCHRITTE]:=THEMA; _[2]:=_[2]+1;
- IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE;
- IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE; _[1]:=_[1]+1; END ;
- ; _[30]:=_[30]+1; UNTIL((UPCASE(X)<>'V')AND(UPCASE(X)<>'U'))OR
- (ANZAHL_SCHRITTE>MAX_ANZAHL_SCHRITTE); _[2]:=_[2]+1;
- IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE;
- IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE; _[30]:=_[30]+1; ;
- ANZAHL_SCHRITTE:=ANZAHL_SCHRITTE-1; _[2]:=_[2]+1;
- IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE;
- IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE; ;
- WRITELN ;
- WRITE(' Bitte Anzahl Sätze angeben : ') ;
- READLN(ANZAHL_SAETZE); _[16]:=_[16]+1;
- IF ANZAHL_SAETZE<_[17] THEN _[17]:=ANZAHL_SAETZE;
- IF ANZAHL_SAETZE>_[18] THEN _[18]:=ANZAHL_SAETZE; ;
- WRITE(' Bitte Tondauer im ersten Satz angeben : ') ;
- READLN(TONDAUER); _[19]:=_[19]+1; IF TONDAUER<_[20] THEN _[20]:=TONDAUER;
- IF TONDAUER>_[21] THEN _[21]:=TONDAUER; ;
- WRITE(' Bitte Prestofaktor angeben : ') ;
- READLN(PRESTOFAKTOR); _[13]:=_[13]+1;
- IF PRESTOFAKTOR<_[14] THEN _[14]:=PRESTOFAKTOR;
- IF PRESTOFAKTOR>_[15] THEN _[15]:=PRESTOFAKTOR; ;
- ;IF _2[1] > _[26] THEN _[26] := _2[1]; _2[1]:=_2[1]-1; END ;
- PROCEDURE GIB_SAETZE_AUS;
- VAR I,U:INTEGER;
- X:CHAR;
- PROCEDURE BILDE_SATZ(SCHACHTELUNG,VARIATIONEN:INTEGER);
- FUNCTION VARIIERT(NOTE:CHAR):CHAR;
- VAR I:INTEGER;
- X:CHAR;
- BEGIN _[54] := _[54] + 1 ; _2[2] := _2[2] + 1 ;
- FOR I:=1 TO ANZAHL_TOENE DO BEGIN _[61] := _[61] + 1 ;
- IF ABBILDUNGSREGEL[I].ALT=NOTE THEN BEGIN _[62] := _[62] + 1 ; X:=
- ABBILDUNGSREGEL[I].NEU; _[57]:=_[57]+1; IF I<_[58] THEN _[58]:=I;
- IF I>_[59] THEN _[59]:=I; _[5]:=_[5]+1; _[60]:=_[60]+1; END ;
- VARIIERT:=X; _[60]:=_[60]+1; _[56]:=_[56]+1; _[57]:=_[57]+1;
- IF I<_[58] THEN _[58]:=I; IF I>_[59] THEN _[59]:=I; _[5]:=_[5]+1; END ;
- _[6]:=_[6]+1; IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE;
- IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; _[57]:=_[57]+1;
- IF I<_[58] THEN _[58]:=I; IF I>_[59] THEN _[59]:=I; ;
- ;IF _2[2] > _[55] THEN _[55] := _2[2]; _2[2]:=_2[2]-1; END ;
- VAR I,U:INTEGER;
- X:CHAR;
- BEGIN _[46] := _[46] + 1 ; _2[3] := _2[3] + 1 ;
- IF SCHACHTELUNG>0 THEN BEGIN _[70] := _[70] + 1 ;
- FOR I:=1 TO ANZAHL_SCHRITTE DO BEGIN _[71] := _[71] + 1 ;
- IF SATZFORM[I]=THEMA THEN BEGIN _[72] := _[72] + 1 ;
- BILDE_SATZ(SCHACHTELUNG-1,VARIATIONEN)
- ; _[51]:=_[51]+1; IF VARIATIONEN<_[52] THEN _[52]:=VARIATIONEN;
- IF VARIATIONEN>_[53] THEN _[53]:=VARIATIONEN; _[48]:=_[48]+1;
- IF SCHACHTELUNG<_[49] THEN _[49]:=SCHACHTELUNG;
- IF SCHACHTELUNG>_[50] THEN _[50]:=SCHACHTELUNG;
- END ELSE BEGIN _[73] := _[73] + 1 ;
- BILDE_SATZ(SCHACHTELUNG-1,VARIATIONEN+1)
- ; _[51]:=_[51]+1; IF VARIATIONEN<_[52] THEN _[52]:=VARIATIONEN;
- IF VARIATIONEN>_[53] THEN _[53]:=VARIATIONEN; _[48]:=_[48]+1;
- IF SCHACHTELUNG<_[49] THEN _[49]:=SCHACHTELUNG;
- IF SCHACHTELUNG>_[50] THEN _[50]:=SCHACHTELUNG; END ; _[63]:=_[63]+1;
- IF I<_[64] THEN _[64]:=I; IF I>_[65] THEN _[65]:=I; _[1]:=_[1]+1; END ;
- _[2]:=_[2]+1; IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE;
- IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE; _[63]:=_[63]+1;
- IF I<_[64] THEN _[64]:=I; IF I>_[65] THEN _[65]:=I;
- END ELSE BEGIN _[74] := _[74] + 1 ;
- FOR I:=1 TO MOTIVLAENGE DO BEGIN _[75] := _[75] + 1 ;
- X:=MOTIV[I]; _[63]:=_[63]+1; IF I<_[64] THEN _[64]:=I;
- IF I>_[65] THEN _[65]:=I; _[9]:=_[9]+1; _[69]:=_[69]+1; ;
- IF VARIATIONEN>0 THEN BEGIN _[76] := _[76] + 1 ;
- FOR U:=1 TO VARIATIONEN DO BEGIN _[77] := _[77] + 1 ;
- X:=VARIIERT(X); _[69]:=_[69]+1; END ; _[51]:=_[51]+1;
- IF VARIATIONEN<_[52] THEN _[52]:=VARIATIONEN;
- IF VARIATIONEN>_[53] THEN _[53]:=VARIATIONEN; _[66]:=_[66]+1;
- IF U<_[67] THEN _[67]:=U; IF U>_[68] THEN _[68]:=U; END ;
- WRITE(X); _[69]:=_[69]+1; _[51]:=_[51]+1;
- IF VARIATIONEN<_[52] THEN _[52]:=VARIATIONEN;
- IF VARIATIONEN>_[53] THEN _[53]:=VARIATIONEN; ;
- END; _[10]:=_[10]+1; IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE;
- IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; _[63]:=_[63]+1;
- IF I<_[64] THEN _[64]:=I; IF I>_[65] THEN _[65]:=I; ;
- WRITE(' ') ;
- END; _[48]:=_[48]+1; IF SCHACHTELUNG<_[49] THEN _[49]:=SCHACHTELUNG;
- IF SCHACHTELUNG>_[50] THEN _[50]:=SCHACHTELUNG; ;
- ;IF _2[3] > _[47] THEN _[47] := _2[3]; _2[3]:=_2[3]-1; END ;
- BEGIN _[37] := _[37] + 1 ; _2[4] := _2[4] + 1 ;
- FOR I:=1 TO ANZAHL_SAETZE DO BEGIN _[78] := _[78] + 1 ;
- CLRSCR ; WRITE('Computer-Composition : -') ;
- FOR U:=1 TO MOTIVLAENGE DO BEGIN _[79] := _[79] + 1 ; WRITE(MOTIV[U]);
- _[42]:=_[42]+1; IF U<_[43] THEN _[43]:=U; IF U>_[44] THEN _[44]:=U;
- _[9]:=_[9]+1; END ; _[10]:=_[10]+1;
- IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE;
- IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; _[42]:=_[42]+1;
- IF U<_[43] THEN _[43]:=U; IF U>_[44] THEN _[44]:=U; ;
- WRITE('- ; Satz ',I,' ; Tondauer : '); _[39]:=_[39]+1;
- IF I<_[40] THEN _[40]:=I; IF I>_[41] THEN _[41]:=I; ;
- IF I>1 THEN BEGIN _[80] := _[80] + 1 ; TONDAUER:=TONDAUER/PRESTOFAKTOR;
- _[13]:=_[13]+1; IF PRESTOFAKTOR<_[14] THEN _[14]:=PRESTOFAKTOR;
- IF PRESTOFAKTOR>_[15] THEN _[15]:=PRESTOFAKTOR; _[19]:=_[19]+1;
- IF TONDAUER<_[20] THEN _[20]:=TONDAUER;
- IF TONDAUER>_[21] THEN _[21]:=TONDAUER; END ;
- WRITELN(TONDAUER:3:2); _[19]:=_[19]+1;
- IF TONDAUER<_[20] THEN _[20]:=TONDAUER;
- IF TONDAUER>_[21] THEN _[21]:=TONDAUER; _[39]:=_[39]+1;
- IF I<_[40] THEN _[40]:=I; IF I>_[41] THEN _[41]:=I; ;
- WRITELN ; WRITE(' ') ;
- BILDE_SATZ(I,0); _[39]:=_[39]+1; IF I<_[40] THEN _[40]:=I;
- IF I>_[41] THEN _[41]:=I; ;
- READ(KBD,X); _[45]:=_[45]+1; ;
- END; _[16]:=_[16]+1; IF ANZAHL_SAETZE<_[17] THEN _[17]:=ANZAHL_SAETZE;
- IF ANZAHL_SAETZE>_[18] THEN _[18]:=ANZAHL_SAETZE; _[39]:=_[39]+1;
- IF I<_[40] THEN _[40]:=I; IF I>_[41] THEN _[41]:=I; ;
- ;IF _2[4] > _[38] THEN _[38] := _2[4]; _2[4]:=_2[4]-1; END ;
- BEGIN FOR __:= 1 TO ___ DO _[__]:=0; FOR __:= 1 TO ___2 DO _2[__]:=-1;
- _[3]:=1.9E+999;_[4]:=-1.9E+999;_[7]:=1.9E+999;_[8]:=-1.9E+999;
- _[11]:=1.9E+999;_[12]:=-1.9E+999;_[14]:=1.9E+999;_[15]:=-1.9E+999;
- _[17]:=1.9E+999;_[18]:=-1.9E+999;_[20]:=1.9E+999;_[21]:=-1.9E+999;
- _[23]:=1.9E+999;_[24]:=-1.9E+999;_[28]:=1.9E+999;_[29]:=-1.9E+999;
- _[40]:=1.9E+999;_[41]:=-1.9E+999;_[43]:=1.9E+999;_[44]:=-1.9E+999;
- _[49]:=1.9E+999;_[50]:=-1.9E+999;_[52]:=1.9E+999;_[53]:=-1.9E+999;
- _[58]:=1.9E+999;_[59]:=-1.9E+999;_[64]:=1.9E+999;_[65]:=-1.9E+999;
- _[67]:=1.9E+999;_[68]:=-1.9E+999;
- EINGABE ;
- GIB_SAETZE_AUS ;
- ;ASSIGN(_f,'B:\TESTFILE.TST\KOMPOSER.WRT');
- REWRITE(_f);
- WRITELN(_f,'(c)1989mkbmeersaukleintier');
- WRITELN(_f,'B:\DEMOS.PAS\KOMPOSER.PAS');
- WRITELN(_f,'ja');
- WRITELN(_f,'80.0');
- FOR __ := 1 TO ___ DO BEGIN
- STR(_[__],_h);
- WRITELN(_f,_h); END;
- CLOSE(_f);
- WRITELN;WRITELN;
- WRITELN('-> Profile-Testlauf beendet. Werte in B:\TESTFILE.TST\KOMPOSER.WRT');
- WRITELN('-> Bitte profile_2.prg starten. ');
- END.
-